Skip to content

Conversation

@ipavlidakis
Copy link
Contributor

🔗 Issue Links

Resolves https://linear.app/stream/issue/IOS-1103/hifi-implementation

🎯 Goal

Describe why we are making this change.

📝 Summary

Provide bullet points with the most important changes in the codebase.

🛠 Implementation

Provide a detailed description of the implementation and explain your decisions if you find them relevant.

🎨 Showcase

Add relevant screenshots and/or videos/gifs to easily see what this PR changes, if applicable.

Before After
img img

🧪 Manual Testing Notes

Explain how this change can be tested manually, if applicable.

☑️ Contributor Checklist

  • I have signed the Stream CLA (required)
  • This change follows zero ⚠️ policy (required)
  • This change should receive manual QA
  • Changelog is updated with client-facing changes
  • New code is covered by unit tests
  • Comparison screenshots added for visual changes
  • Affected documentation updated (tutorial, CMS)

🎁 Meme

Provide a funny gif or image that relates to your work on this pull request. (Optional)

@ipavlidakis ipavlidakis self-assigned this Oct 16, 2025
@ipavlidakis ipavlidakis added the enhancement New feature or request label Oct 16, 2025
@ipavlidakis ipavlidakis changed the title Enhancement/hifi/feature implementation [Enhancement]HiFi feature implementation Oct 16, 2025
@ipavlidakis ipavlidakis force-pushed the enhancement/hifi/feature-implementation branch from 9484432 to 4561d95 Compare October 16, 2025 09:45
@github-actions
Copy link

1 Message
📖 Skipping Danger since the Pull Request is classed as Draft/Work In Progress

Generated by 🚫 Danger

@ipavlidakis ipavlidakis force-pushed the enhancement/hifi/feature-implementation branch 4 times, most recently from e20ea43 to dade6d4 Compare October 17, 2025 11:37
@ipavlidakis ipavlidakis force-pushed the enhancement/hifi/feature-implementation branch from eb2eb3b to 283a24a Compare October 20, 2025 13:50
@sonarqubecloud
Copy link

@github-actions
Copy link

github-actions bot commented Nov 3, 2025

Public Interface

 public struct StatelessMicrophoneIconView: View  
-   @MainActor public init(call: Call?,callSettings: CallSettings = .init(),size: CGFloat = 44,controlStyle: ToggleControlStyle = .init(
+   @MainActor public init(call: Call?,callSettings: CallSettings = .default,size: CGFloat = 44,controlStyle: ToggleControlStyle = .init(

 public final class MicrophoneManager: ObservableObject, CallSettingsManager, @unchecked Sendable  
-   public func toggle()async throws 
+   public func toggle(file: StaticString = #file,function: StaticString = #function,line: UInt = #line)async throws 
-   public func enable()async throws 
+   public func enable(file: StaticString = #file,function: StaticString = #function,line: UInt = #line)async throws 
-   public func disable()async throws
+   public func disable(file: StaticString = #file,function: StaticString = #function,line: UInt = #line)async throws

 public struct StatelessVideoIconView: View  
-   public init(call: Call?,callSettings: CallSettings = .init(),size: CGFloat = 44,controlStyle: ToggleControlStyle = .init(
+   public init(call: Call?,callSettings: CallSettings = .default,size: CGFloat = 44,controlStyle: ToggleControlStyle = .init(

 @MainActor public class CallState: ObservableObject  
-   @Published public internal var callSettings
+   @Published public internal var callSettings: CallSettings

 public final class CallSettings: ObservableObject, Sendable, Equatable, CustomStringConvertible  
-   public let audioOn: Bool
+   public static let `default`
-   public let videoOn: Bool
+   public let audioOn: Bool
-   public let speakerOn: Bool
+   public let videoOn: Bool
-   public let audioOutputOn: Bool
+   public let speakerOn: Bool
-   public let cameraPosition: CameraPosition
+   public let audioOutputOn: Bool
-   public var shouldPublish: Bool
+   public let cameraPosition: CameraPosition
-   public var description: String
+   public var shouldPublish: Bool
-   
+   public var description: String
- 
+   
-   public convenience init(_ response: CallSettingsResponse,file: StaticString = #file,function: StaticString = #function,line: UInt = #line)
+ 
-   public init(audioOn: Bool = true,videoOn: Bool = true,speakerOn: Bool = true,audioOutputOn: Bool = true,cameraPosition: CameraPosition = .front,file: StaticString = #file,function: StaticString = #function,line: UInt = #line)
+   public convenience init(_ response: CallSettingsResponse,file: StaticString = #file,function: StaticString = #function,line: UInt = #line)
-   
+   public init(audioOn: Bool = true,videoOn: Bool = true,speakerOn: Bool = true,audioOutputOn: Bool = true,cameraPosition: CameraPosition = .front,file: StaticString = #file,function: StaticString = #function,line: UInt = #line)
- 
+   
-   public static func ==(lhs: CallSettings,rhs: CallSettings)-> Bool
+ 
+   public static func ==(lhs: CallSettings,rhs: CallSettings)-> Bool

@Stream-SDK-Bot
Copy link
Collaborator

SDK Size

title develop branch diff status
StreamVideo 8.77 MB 8.85 MB +84 KB 🟢
StreamVideoSwiftUI 2.36 MB 2.36 MB 0 KB 🟢
StreamVideoUIKit 2.48 MB 2.48 MB 0 KB 🟢
StreamWebRTC 11.01 MB 11.01 MB 0 KB 🟢

@Stream-SDK-Bot
Copy link
Collaborator

StreamVideo XCSize

Object Diff (bytes)
RTCAudioStore+State.o +27074
StreamCallAudioRecorder.o +14471
AudioDeviceModule.o +14335
RTCAudioStore.o -13117
RTCAudioStore+Action.o +12115
Show 75 more objects
Object Diff (bytes)
DisposableBag.o +9097
WebRTCStatsCollecting.o -7821
CallAudioSession.o -7521
RTCAudioStore+AudioDeviceModuleMiddleware.o +7109
RTCAudioStore+AVAudioSessionReducer.o +6928
RTCAudioStore+RouteChangeEffect.o -6888
StreamCallAudioRecorder+AVAudioRecorderMiddleware.o +5591
RTCAudioSessionPublisher.o +5319
RTCAudioStore+InterruptionEffect.o -5207
RTCAudioStore+RouteChangeMiddleware.o +5000
PeerConnectionFactory.o +4763
ApplicationLifecycleVideoMuteAdapter.o -4328
RTCAudioSessionReducer.o -4269
CallKitService.o +3983
RTCAudioStore+InterruptionsMiddleware.o +3704
CallParticipant.o +3530
WebRTCStateAdapter.o +3365
RTCAudioStore+RestartAudioSession.o -3257
RTCAudioStore+DefaultReducer.o +3186
Logger.o -2980
RTCAudioStore+Coordinator.o +2971
Call.o +2932
AudioEngineLevelNodeAdapter.o +2813
RTCAudioStore+AVAudioSessionConfigurationValidator.o +2478
BatteryStore.o +2067
RTCAudioStore+WebRTCAudioSessionReducer.o +1849
RTCAudioStore+CallKitReducer.o +1618
Models.o +1576
RTCAudioStore+Namespace.o +1249
CallKitAudioSessionReducer.o -1159
RTCAudioStoreAction+AudioSession.o -1078
MicrophoneManager.o +947
Encodable+Retroactive.o +808
RTCAudioStoreAction.o -782
RTCAudioStoreAction+CallKit.o -660
UpdateCallResponse.o +604
StoreCoordinator.o +582
CallController.o +497
Logger+ThrowingExecution.o +496
RTCAudioDeviceModuleControlling.o +487
AVAudioSessionRouteDescription+Convenience.o -460
StreamCallAudioRecorder+CategoryMiddleware.o -418
PermissionsStore.o +414
CallTimeline.o +408
StreamCallAudioRecorder+InterruptionMiddleware.o -372
CallSettings.o +371
Call+Stage.o +366
NoiseCancellationSettingsRequest.o +328
ICEConnectionStateAdapter.o -316
RTCAudioStoreAction+Generic.o -263
Store.o +205
Protobuf+SelectiveEncodable.o +200
StreamCallAudioRecorder+ShouldRecordMiddleware.o -192
ReflectiveStringConvertible.o +188
StoreTask.o +166
RTCPeerConnectionCoordinator.o -158
StreamCallStatisticsFormatter.o +144
CallParticipant+Convenience.o +144
RTCAudioStoreMiddleware.o -138
RTCAudioStoreReducer.o -134
WebRTCAuthenticator.o -120
CameraInterruptionsHandler.o -116
AVFAudio.tbd +88
CallKitPushNotificationAdapter.o -84
StoreLogger.o +76
LocalAudioMediaAdapter.o +74
WebRTCCoordinator+Blocked.o -68
RawJSON.o -68
BatteryStore+ObservationMiddleware.o -64
Foundation.tbd +64
SwiftProtobuf.o +56
AudioProcessingStore.o +54
BroadcastBufferReader.o -52
Reducer.o -52
HTTPClient.o -42

@Stream-SDK-Bot
Copy link
Collaborator

StreamVideoSwiftUI XCSize

Object Diff (bytes)
CallControlsView.o -520
CallViewModel.o -175

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants